package org.summer.lawyer.domain.bo.brokerageuser;

import io.github.linpeilie.annotations.AutoMapper;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.summer.common.mybatis.core.domain.BaseEntitySearch;
import org.summer.lawyer.domain.BrokerageUser;

import java.io.Serial;
import java.util.Date;

/**
 * 分销员业务对象 brokerage_user
 *
 * @author summer
 * @date 2024-06-20
 */
@Schema(title ="分销员视图对象 brokerage_user", description = "分销员视图对象 brokerage_user")
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BrokerageUser.class, reverseConvertGenerate = false)
public class BrokerageUserBo extends BaseEntitySearch {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @Schema(title = "brokerageUserId", type = "Long", description = "主键ID")
    //@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
    private Long brokerageUserId;

    /**
     * 微信用户ID
     */
    @Schema(title = "wxUserId", type = "Long", description = "微信用户ID")
    //@NotNull(message = "微信用户ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long wxUserId;

    /**
     * 用户昵称
     */
    @Schema(title = "nickname", type = "String", description = "用户昵称")
    //@NotBlank(message = "用户昵称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String nickname;

    /**
     * 头像
     */
    @Schema(title = "avatar", type = "String", description = "头像")
    //@NotBlank(message = "头像不能为空", groups = { AddGroup.class, EditGroup.class })
    private String avatar;

    /**
     * 邀请码
     */
    @Schema(title = "brokerageCode", type = "String", description = "邀请码")
    //@NotBlank(message = "邀请码不能为空", groups = { AddGroup.class, EditGroup.class })
    private String brokerageCode;

    /**
     * 推广资格(0停用，1启用）
     */
    @Schema(title = "status", type = "String", description = "推广资格(0停用，1启用）")
    //@NotBlank(message = "推广资格(0停用，1启用）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String status;

    /**
     * 推广人数
     */
    @Schema(title = "userCount", type = "Integer", description = "推广人数")
    //@NotNull(message = "推广人数不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer userCount;

    /**
     * 推广订单数量
     */
    @Schema(title = "orderCount", type = "Integer", description = "推广订单数量")
    //@NotNull(message = "推广订单数量不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer orderCount;

    /**
     * 推广订单金额，单位分
     */
    @Schema(title = "orderAmount", type = "Long", description = "推广订单金额，单位分")
    //@NotNull(message = "推广订单金额，单位分不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long orderAmount;

    /**
     * 已提现金额，单位分
     */
    @Schema(title = "withdrawAmount", type = "Long", description = "已提现金额，单位分")
    //@NotNull(message = "已提现金额，单位分不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long withdrawAmount;

    /**
     * 已提现次数
     */
    @Schema(title = "withdrawCount", type = "Integer", description = "已提现次数")
    //@NotNull(message = "已提现次数不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer withdrawCount;

    /**
     * 成为推广员时间
     */
    @Schema(title = "brokerageTime", type = "Date", description = "成为推广员时间")
    //@NotNull(message = "成为推广员时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date brokerageTime;

    /**
     * 上级推广员ID
     */
    @Schema(title = "bindUserId", type = "Long", description = "上级推广员ID")
    //@NotNull(message = "上级推广员ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long bindUserId;

    /**
     * 上级推广员姓名
     */
    @Schema(title = "bindUserName", type = "String", description = "上级推广员姓名")
    //@NotBlank(message = "上级推广员姓名不能为空", groups = { AddGroup.class, EditGroup.class })
    private String bindUserName;

    /**
     * 推广员绑定时间
     */
    @Schema(title = "bindUserTime", type = "Date", description = "推广员绑定时间")
    //@NotNull(message = "推广员绑定时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date bindUserTime;


}
